package com.glsc.ngateway.common.base.utils;

import org.apache.commons.lang.math.NumberUtils;
import org.springframework.util.StringUtils;

import java.util.regex.Pattern;

public class IdUtil {

    public static Pattern r4 = Pattern.compile("[0-9]*");


    /**
     * 表中的主键一般是String+6位数字类型的，如tag_000001之类的
     * 如果是空表，用<prefix>_000001做为第一个id。
     * 如果不是空表，用<prefix>_<maxId+1>做为当前id。
     *
     * @param maxId
     * @param prefix
     * @return
     */
    public static String getNextval(String maxId, String prefix) {

        if (!StringUtils.isEmpty(maxId)) {
            String number = maxId.replaceAll(".*[^\\d](?=(\\d+))", "");
            if (r4.matcher(number).matches()) {
                return maxId.replaceAll(number, String.format("%0" + number.length() + "d", Integer.parseInt(number) + 1));
            }
        }

        return prefix + "_00001";
    }

    /**
     * @author: qiyr
     * @date: 2023/9/11 16:43
     * @description:
     */
    public static Integer getNextIntVal(Integer maxId) {
        return maxId == null ? NumberUtils.INTEGER_ONE : ++maxId;
    }

    public static void main(String[] args) {

        System.out.println(getNextval(null, "Tag"));
        System.out.println(getNextval("Tag_0123", "Tag"));
        System.out.println(getNextval("sifwf", "Tag"));


    }

}
